#ifndef __LEXMETHODS_H__
#define __LEXMETHODS_H__

#include <stdbool.h>
#include <stdio.h>

// ************************ STRUCTS ********************

typedef union LexVal {
	float fval;
	int ival;
	char* sval;
} LexVal;

// *********************** VARIABILI ****************************

LexVal lexval;

/**
 * alloc a space in memory for the stirng strToStore
 * strToStore: the string to be stored
 */
char* createString(char* strToStore);
/* alloca in memoria un nuovo intero in modo da poterlo inserire in una ValueDispatcher struct
 intToStore: indica l'intero che si vuole inserire
 */
int* createInteger(int intToStore);
/* alloca in memoria un nuovo boolean in modo da poterlo inserire in una ValueDispatcher struct
 booleanToStore: indica un carattere. se vale 'T' o 't' allora il risultato sarà TRUE, altrimenti sarà FALSE
 */
bool* createBoolean(char booleanToStore);

/**alloca in memoria un nuovo Unsigned Long in modo da poterlo inserire in una ValueDispatcher struct
 *
 * @param unsignedlongToStore indica il numero da incamerare in memoria
 */
unsigned long* createUnsignedLong(unsigned long unsignedlongToStore);


float* createFloat(float floatToStore);

#endif
